// 简历服务层 - 增删改查
import { Resume } from "../models/Resume";

/**
 * 创建简历
 * @param resume 简历数据
 * @returns 创建的简历记录
 */
export const createResume = async (resume: Partial<Resume>) => {
  try {
    return await Resume.create(resume);
  } catch (error) {
    console.error('创建简历失败:', error);
    throw new Error('创建简历失败');
  }
};

/**
 * 删除简历
 * @param id 简历ID
 * @returns 删除结果
 */
export const deleteResume = async (id: number) => {
  try {
    const result = await Resume.destroy({ where: { id } });
    if (result === 0) {
      throw new Error('简历不存在');
    }
    return result;
  } catch (error) {
    console.error('删除简历失败:', error);
    throw error;
  }
};

/**
 * 更新简历
 * @param id 简历ID
 * @param resume 更新的简历数据
 * @returns 更新结果
 */
export const updateResume = async (id: number, resume: Partial<Resume>) => {
  try {
    const [affectedCount] = await Resume.update(resume, { where: { id } });
    if (affectedCount === 0) {
      throw new Error('简历不存在或没有更新任何数据');
    }
    return await Resume.findByPk(id);
  } catch (error) {
    console.error('更新简历失败:', error);
    throw error;
  }
};

/**
 * 根据ID获取简历
 * @param id 简历ID
 * @returns 简历记录
 */
export const getResume = async (id: number) => {
  try {
    const resume = await Resume.findByPk(id);
    if (!resume) {
      throw new Error('简历不存在');
    }
    return resume;
  } catch (error) {
    console.error('获取简历失败:', error);
    throw error;
  }
};

/**
 * 获取用户的所有简历
 * @param userId 用户ID
 * @returns 简历列表
 */
export const getResumes = async (userId: number) => {
  try {
    return await Resume.findAll({ 
      where: { userId },
      order: [['updatedAt', 'DESC']] // 按更新时间倒序排列
    });
  } catch (error) {
    console.error('获取简历列表失败:', error);
    throw error;
  }
};

/**
 * 验证简历内容格式
 * @param content 简历内容JSON字符串
 * @returns 验证结果
 */
export const validateResumeContent = (content: string): boolean => {
  try {
    const parsed = JSON.parse(content);
    // 基本结构验证
    return typeof parsed === 'object' && parsed !== null;
  } catch (error) {
    return false;
  }
};
